<?php
/**
*	@author SignpostMarv Martin
*	@package LLSD
*/

/**
*	Relatively pointless abstract class, allows instanceof to be used to identify a NaN
*	@package LLSD
*	@subpackage LLSD_NaN
*	@uses uhu_LLSD_common
*/
abstract class uhu_LLSD_numeric_NaN extends uhu_LLSD_common{}

/**
*	The class used to represent NaN integers.
*	@package LLSD_NaN
*/
class uhu_LLSD_integer_NaN extends uhu_LLSD_numeric_NaN
{
/**
*	@var uhu_LLSD_integer_NaN an isntance of uhu_LLSD_integer_NaN
*/
	protected static $singleton;
/**
*	Uses the singleton method to return an instance of uhu_LLSD_integer_NaN
*	@return uhu_LLSD_integer_NaN
*	@uses uhu_LLSD_integer_NaN::$singleton
*/
	public static function singleton()
	{
		return self::$singleton = isset(self::$singleton) ? self::$singleton : new self;
	}
}
/**
*	The class used to represent NaN floats.
*	@package LLSD_NaN
*/
class uhu_LLSD_real_NaN extends uhu_LLSD_numeric_NaN
{
/**
*	@var uhu_LLSD_real_NaN an isntance of uhu_LLSD_real_NaN
*/
	protected static $singleton;
/**
*	Uses the singleton method to return an instance of uhu_LLSD_real_NaN
*	@return uhu_LLSD_real_NaN
*	@uses uhu_LLSD_real_NaN::$singleton
*/
	public static function singleton()
	{
		return self::$singleton = isset(self::$singleton) ? self::$singleton : new self;
	}
}
?>